home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / php / pear / Image / GIS / Parser.php < prev    next >
PHP Script  |  2004-03-24  |  4KB  |  143 lines

  1. <?php
  2. //
  3. // +------------------------------------------------------------------------+
  4. // | PEAR :: Image :: GIS :: Parser Base Class                              |
  5. // +------------------------------------------------------------------------+
  6. // | Copyright (c) 2002-2004 Jan Kneschke <jan@kneschke.de> and             |
  7. // |                         Sebastian Bergmann <sb@sebastian-bergmann.de>. |
  8. // +------------------------------------------------------------------------+
  9. // | This source file is subject to version 3.00 of the PHP License,        |
  10. // | that is available at http://www.php.net/license/3_0.txt.               |
  11. // | If you did not receive a copy of the PHP license and are unable to     |
  12. // | obtain it through the world-wide-web, please send a note to            |
  13. // | license@php.net so we can mail you a copy immediately.                 |
  14. // +------------------------------------------------------------------------+
  15. //
  16. // $Id: Parser.php,v 1.10 2004/01/01 10:31:37 sebastian Exp $
  17. //
  18.  
  19. require_once 'Cache/Lite.php';
  20. require_once 'Image/GIS/LineSet.php';
  21.  
  22. /**
  23. * Parser Base Class.
  24. *
  25. * @version  $Revision: 1.10 $
  26. * @since    Image_GIS 1.0.0
  27. */
  28. class Image_GIS_Parser {
  29.     /**
  30.     * Cache.
  31.     *
  32.     * @var Cache_Lite $cache
  33.     */
  34.     var $cache = NULL;
  35.  
  36.     /**
  37.     * Data Files.
  38.     *
  39.     * @var array $dataFiles
  40.     */
  41.     var $dataFiles = array();
  42.  
  43.     /**
  44.     * Set to TRUE to enable debugging.
  45.     *
  46.     * @var boolean $debug
  47.     */
  48.     var $debug;
  49.  
  50.     /**
  51.     * Line Set.
  52.     *
  53.     * @var array $lineSets
  54.     */
  55.     var $lineSets = array();
  56.  
  57.     /**
  58.     * Constructor.
  59.     *
  60.     * @param  boolean $cache
  61.     * @param  boolean $debug
  62.     * @access public
  63.     */
  64.     function Image_GIS_Parser($cache, $debug) {
  65.         if ($cache) {
  66.             $this->cache = new Cache_Lite;
  67.         }
  68.  
  69.         $this->debug = $debug;
  70.     }
  71.  
  72.     /**
  73.     * Factory.
  74.     *
  75.     * @param  string  $parser
  76.     * @param  boolean $cache
  77.     * @param  boolean $debug
  78.     * @return object
  79.     * @access public
  80.     */
  81.     function &factory($parser, $cache, $debug) {
  82.         include_once 'Image/GIS/Parser/' . $parser . '.php';
  83.  
  84.         $class  = 'Image_GIS_Parser_' . $parser;
  85.         $object = new $class($cache, $debug);
  86.  
  87.         return $object;
  88.     }
  89.  
  90.     /**
  91.     * Adds a datafile to the map.
  92.     *
  93.     * @param  string  $dataFile
  94.     * @param  mixed   $color
  95.     * @access public
  96.     */
  97.     function addDataFile($dataFile, $color) {
  98.         $this->dataFiles[$dataFile] = $color;
  99.     }
  100.  
  101.     /**
  102.     * Parses the data files of the map.
  103.     *
  104.     * @access public
  105.     * @return array
  106.     */
  107.     function parse() {
  108.         foreach ($this->dataFiles as $dataFile => $color) {
  109.             $cacheID = md5($dataFile . '_' . $color);
  110.             $lineSet = false;
  111.  
  112.             if (is_object($this->cache) &&
  113.                 $lineSet = $this->cache->get($cacheID, 'Image_GIS')) {
  114.                 $lineSet = unserialize($lineSet);
  115.             }
  116.  
  117.             if ($lineSet === false) {
  118.                 $lineSet = $this->parseFile($dataFile, $color);
  119.  
  120.                 if (is_object($this->cache)) {
  121.                     $this->cache->save(serialize($lineSet), $cacheID, 'Image_GIS');
  122.                 }
  123.             }
  124.  
  125.             $this->lineSets[] = $lineSet;
  126.         }
  127.  
  128.         return $this->lineSets;
  129.     }
  130.  
  131.     /**
  132.     * Parses a data file.
  133.     *
  134.     * @param  string  $dataFile
  135.     * @param  mixed   $color
  136.     * @return mixed
  137.     * @access public
  138.     * @abstract
  139.     */
  140.     function parseFile($dataFile, $color) { /* abstract */ }
  141. }
  142. ?>
  143.